import axios from "axios"
import appStore from "@/stores"

const { hidePageLoading } = appStore.homeviewStore

/**
 * ！！！ `js` 中函数参数只有按位传递，不能按名传递
 * @param {string} method - 请求方法（如 `get`、`post` 等），必填
 * @param {string} url - 请求的 `URL`，必填
 * @param {Object} headers - 请求头，可选，默认为 `{}`
 * @param {Object} params - URL 参数，可选，默认为 `{}`
 * @param {Object} data - 请求体数据，可选，默认为 `{}`
 * @returns {Promise<any>} - 返回 Promise
 */
async function axiosAPI(method, url, headers = {}, params = {}, data = {}, showLoading = true) {
  return axios({
    method: method,
    url: url,
    headers: headers,
    params: params, // 浏览器表现形式：嵌在url
    data: data, // GET无此参数
  })
    .then((response) => response.data)
    .catch((error) => {
      throw error
    })
    .finally(() => {
      if (showLoading) {
        setTimeout(() => {
          hidePageLoading()
        }, 500)
      }
    })
}

export default axiosAPI
